/**
 * loader:1.下载 2.使用（配置loader）
 * plugins：1.下载 2.引入 3.使用
 * 
*/

const {resolve} = require('path');
const HtmlWebpackPlugin = require('html-webpack-plugin');

module.exports = {
    entry: './src/index.js',
    output:{
        filename:'built.js',
        path:resolve(__dirname,'build')
    },
    module:{
        rules:[
            //loader配置
            {
                test:/\.css$/,
                use:[
                    'style-loader',
                    'css-loader'
                ]
            },
            {
                test:/\.less$/,
                use:[
                    'style-loader',
                    'css-loader',
                    'less-loader'
                ]
            },
            {
                exclude:/\.(js|css|html)$/,
                loader: 'file-loader'
            },
            {
                test: /\.js$/,
                exclude:/node_modules/,
                loader:'eslint-loader',
                options:{
                    fix:true
                }
            },
            {
                test: /\.js$/,
                exclude:/node_modules/,
                loader:'babel-loader',
                options:{
                    presets:[
                        '@babel/preset-env',
                        {
                            useBuiltIns: 'usage',
                            corejs:{
                                version:3
                            },
                            targets:{
                                chrome: '60',
                                firefox: '60',
                                ie: '9'
                            }
                        }
                    ]
                }

            }
        ]
    },
    plugins:[
        // plugins配置
        // html-webpack-plugin
        // 功能：默认会创建一个空的HTML文件，自动引入打包输出的所有资源（JS/CSS）
        // 需求：需要有结构的HTML文件(可以传入参数{template:'xxx'})
        new HtmlWebpackPlugin({
            // 复制./src/index.html文件，并自动引入打包输出的所有资源（JS/CSS）
            template: './src/index.html'
        })
    ],
    mode:'development',
    devServer:{
        contentBase:resolve(__dirname,'build'),
        compress: true,
        port: 3000,
        open: true,
    }
}